//	Project:	HexTower
//	File:		GamePlayState.h
//	Author:		Mustafa Aldoori
//	Purpose:	Game Play State Declaration.

#pragma once
#include "IGameState.h"
#include "DirectInput_Manager.h"
#include "DirectGraphics_Manager.h"
#include "TileManager.h"
#include "Cursor.h"
#include "HUD.h"

class	Direct3D_Manager;

class CGamePlayState : public IGameState
{
private:
	bool	m_bPause;

	// Frames Logic
	int		m_nFrames;
	int		m_nFPS;
	float	m_fFrameTimer;

	// Utilities
	CCursor*					m_pC;
	CHUD*						m_pHUD;

	// Managers
	Direct3D_Manager*			m_pD3D;
	DirectInput_Manager*		m_pDI;
	DirectGraphics_Manager*		m_pGM;
	CTileManager*				m_pTM;

	// Image ID
	int nBackgroundID;
	int nCursorID;

	// Mouse Logic
	
	CGamePlayState( const CGamePlayState& );
	CGamePlayState& operator=( const CGamePlayState& );
	CGamePlayState( void );
	virtual ~CGamePlayState( void );

public:
	static CGamePlayState* GetInstance( void );
	virtual void Enter( void );					// Load Resources
	virtual void Exit( void );					// Unload Resources

	virtual bool Input( void );					// Handle Input
	virtual void Update( float fElapsed );		// Update game entities
	virtual void Render( void );				// Render game entities

	void SetPauseBool( bool bPauseGame ) { m_bPause = bPauseGame;	}
	bool GetPauseBool( void )			 { return m_bPause;			}

	
};

